#include <bits/stdc++.h>
#define int long long 
using namespace std;

map<int, int> dp[20][2][2]; 
int digit[20];
int cnt;
int n, m;

int dfs(int pos,  int limit, int mul, int zero){ // mul 为前面的成绩 zero 表示是否有前导 0
	if (pos==0) {
		return mul<=m && !zero; // 最后的结果不能是 全是前导0
	}
	
	if (dp[pos][limit][zero].count(mul)) {
		return dp[pos][limit][zero][mul];
	}
	int up=limit?digit[pos]:9;
	int res=0;
	for (int i=0;i<=up;i++) {
		res+=dfs(pos-1,limit&&(i==up), (zero&&(i==0))?mul:mul*i, zero&&(i==0));
	}
	return dp[pos][limit][zero][mul]=res;
}

int cal(int x){
	while(x){
		digit[++cnt]=x%10;
		x/=10;
	}
	return dfs(cnt,  1, 1, 1);
}


void solve(){
	cin >>n>>m;
	int ans = cal(n);
	cout << ans <<'\n';
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
